import { IContext, IParam, IViewDetail } from '../../common';
import { IOpenViewResult } from './i-open-view-param';

/**
 * 打开视图辅助类
 */
export interface IOpenViewHelper {
	/**
	 * 打开视图
	 * @param view 视图详情
	 * @param context  应用上下文
	 * @param viewParams  视图参数
	 */
	openPage(
		view: IViewDetail,
		context: IContext,
		viewParams: IParam
	): Promise<IOpenViewResult> | void;

	/**
	 * 顶级分页打开视图
	 * @param view 视图详情
	 * @param context 应用上下文
	 * @param viewParams 视图参数
	 */
	openIndexViewTab(
		view: IViewDetail,
		context: IContext,
		viewParams: IParam
	): void;

	/**
	 * 非模式弹出
	 * @param view 视图详情
	 * @param context 应用上下文
	 * @param viewParams 视图参数
	 */
	openPopup(
		view: IViewDetail,
		context: IContext,
		viewParams: IParam
	): Promise<IOpenViewResult>;

	/**
	 * 模态弹出
	 * @param view 视图详情
	 * @param context 应用上下文
	 * @param viewParams 视图参数
	 */
	openModal(
		view: IViewDetail,
		context: IContext,
		viewParams: IParam
	): Promise<IOpenViewResult>;

	/**
	 * 独立程序弹出
	 * @param view 视图详情
	 * @param context 应用上下文
	 * @param viewParams 视图参数
	 */
	openApp(
		view: IViewDetail,
		context: IContext,
		viewParams: IParam
	): Promise<IOpenViewResult>;

	/**
	 * 气泡打开
	 * @param view 视图详情
	 * @param context 应用上下文
	 * @param viewParams 视图参数
	 */
	openPopover(
		view: IViewDetail,
		context: IContext,
		viewParams: IParam
	): Promise<IOpenViewResult>;

	/**
	 * 打开上方抽屉
	 * @param view 视图详情
	 * @param context 应用上下文
	 * @param viewParams 视图参数
	 */
	openTopDrawer(
		view: IViewDetail,
		context: IContext,
		viewParams: IParam
	): Promise<IOpenViewResult>;

	/**
	 * 打开下方抽屉
	 * @param view 视图详情
	 * @param context 应用上下文
	 * @param viewParams 视图参数
	 */
	openBottomDrawer(
		view: IViewDetail,
		context: IContext,
		viewParams: IParam
	): Promise<IOpenViewResult>;

	/**
	 * 打开左侧抽屉
	 * @param view 视图详情
	 * @param context 应用上下文
	 * @param viewParams 视图参数
	 */
	openLeftDrawer(
		view: IViewDetail,
		context: IContext,
		viewParams: IParam
	): Promise<IOpenViewResult>;

	/**
	 * 打开右侧抽屉
	 * @param view 视图详情
	 * @param context 应用上下文
	 * @param viewParams 视图参数
	 */
	openRightDrawer(
		view: IViewDetail,
		context: IContext,
		viewParams: IParam
	): Promise<IOpenViewResult>;
}
